<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function quickSort(array) {

            function doSort(arr, left = 0, right = arr.length - 1) {
                // 左节点和右节点重合，表示整理完毕。
                if (left >= right) {
                    return;
                }
                let i = left;
                let j = right;
                // 把第一个数作为基础值进行比较
                const baseVal = arr[i];
                while (i < j) {
                    // 当右边大于基准数的时候，略过
                    while (i < j && arr[j] > baseVal) {
                        j --;
                    }
                    // 如果右边数小于等于基准，那么跳出循环，并把当前数赋值给左边
                    arr[i] = arr[j];
                    // 同理，左边的数大于等于基准的时候跳过
                    while (i < j && arr[i] <= baseVal) {
                        i ++;
                    }
                    // 如果左边的数大于基准，那么跳出循环，并把当前数赋值给右边
                    arr[j] = arr[i];                
                }
                arr[i] = baseVal;
                // 把数组分成左右两侧，继续排序
                doSort(arr,left,i - 1);
                doSort(arr,i + 1,right);
            }
            doSort(array);
        }

        let array = [70,52,84,20,90,12313,54345345,1231223,6746,123,125,123,54,1,52345,3123,70];
        quickSort(array);
        console.log(array);
    </script>



</body>

</html>